Verification of MPI-based Computations
نویسنده
چکیده
Mpi-Spin [1, 2] is an extension to the model checker Spin [3, 4] for verifying correctness of MPI-based parallel and distributed algorithms. It adds to Spin’s input language a number of types, constants, and functions corresponding to primitives in the MPI Standard [5]. The semantics of these added primitives are defined using an abstract model of a generic MPI implementation which encodes all possible behaviors permitted by the Standard. Thus Mpi-Spin can verify that an algorithm will behave correctly on any (correct) MPI platform. By default, Mpi-Spin will check for a number of standard defects in MPIbased algorithms: deadlocks, failure to wait for the completion of communication requests before finalization, attempts to access buffers used in active communication operations, out-of-order invocations of collective functions, and so on. It can also be used to verify the functional correctness of an algorithm—that an algorithm will always produce the correct result on any given input [6]. Functional correctness is specified by providing a sequential version of the algorithm which is presumed to be correct. The problem is then reduced to verifying that the parallel and sequential versions are functionally equivalent. This is accomplished using symbolic execution [7]: the inputs to the algorithms are modeled using symbolic constants Xi and the outputs are expressed as symbolic expressions in the Xi. Nondeterministic choice is used to model branches and the branch decision is recorded in a symbolic path condition variable pc. A simple decision procedure can detect that pc becomes unsatisfiable, at which point the search backtracks. To compare the two versions, a composite model is constructed in which pc is initialized to true, the sequential model is executed, and then the parallel model is executed with the value of pc resulting from the sequential execution. Finally, an assertion is used to check that the symbolic results from the two versions coincide. A depth-first search of the state space of the composite model will explore all possible executions of the sequential version, each of which results in a path condition-symbolic output pair. For each of these pairs, all possible executions of the parallel version consistent with pc are explored, and the outputs are compared. Thus the path condition is used to “match up” executions of the two versions on the same inputs domains. The notion of equivalence depends upon the semantics one associates to the numerical operations. Successively weaker notions of equivalence supported by Mpi-Spin are Herbrand (operations are treated as uninterpreted functions),
منابع مشابه
Verifying Parallel Programs with MPI-Spin
Standard testing and debugging techniques are notoriously ineffective when applied to parallel programs, due to the numerous sources of nondeterminism arising from parallelism. MPI-Spin, an extension of the model checker Spin for verifying and debugging MPI-based parallel programs, overcomes many of the limitations associated with the standard techniques. By exploring all possible executions of...
متن کاملDeductive Verification of Parallel Programs Using Why3
The Message Passing Interface specification (MPI) defines a portable message-passing API used to program parallel computers. MPI programs manifest a number of challenges on what concerns correctness: sent and expected values in communications may not match, resulting in incorrect computations possibly leading to crashes; and programs may deadlock resulting in wasted resources. Existing tools ar...
متن کاملParleda: a Library for Parallel Processing in Computational Geometry Applications
ParLeda is a software library that provides the basic primitives needed for parallel implementation of computational geometry applications. It can also be used in implementing a parallel application that uses geometric data structures. The parallel model that we use is based on a new heterogeneous parallel model named HBSP, which is based on BSP and is introduced here. ParLeda uses two main lib...
متن کاملProtocol-based verification of MPI programs
We present a methodology for the verification of Message Passing Interface (MPI) programs written in C. The aim is to statically verify programs against protocol specifications, enforcing properties such as fidelity and absence of deadlocks. We make use of a protocol language based on a dependent type system for message-passing parallel programs. For the verification of a program against a give...
متن کاملPractical Model-Checking Method for Verifying Correctness of MPI Programs
Formal program verification often requires creating a model of the program and running it through a model-checking tool. However, this model-creation step is itself error prone, tedious, and difficult for someone not familiar with formal verification. In this paper, we describe a tool for verifying correctness of MPI programs that does not require the creation of a model and instead works direc...
متن کاملA NEW PROTOCOL MODEL FOR VERIFICATION OF PAYMENT ORDER INFORMATION INTEGRITY IN ONLINE E-PAYMENT SYSTEM USING ELLIPTIC CURVE DIFFIE-HELLMAN KEY AGREEMENT PROTOCOL
Two parties that conduct a business transaction through the internet do not see each other personally nor do they exchange any document neither any money hand-to-hand currency. Electronic payment is a way by which the two parties transfer the money through the internet. Therefore integrity of payment and order information of online purchase is an important concern. With online purchase the cust...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2008